﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DoNet.WechatPay.V2.Entitys.Requests
{
    public class RefundQueryRequest : RequestBase
    {
        /*
         * 
         * pay/refundquery
        服务商的APPID	appid	是	appid	是	appid	是	appid	是	appid	是	String(32)	服务商商户的APPID
商户号	mch_id	是	mch_id	是	mch_id	是	mch_id	是	mch_id	是	String(32)	服务商商户的商户号
子商户公众账号/应用ID	sub_appid	否	sub_appid	否	sub_appid	否	sub_appid	否	sub_appid	否	String(32)	特约商户在微信开放平台上申请的APPID
子商户号	sub_mch_id	是	sub_mch_id	是	sub_mch_id	是	sub_mch_id	是	sub_mch_id	是	String(32)	特约商户的商户号
随机字符串	nonce_str	是	nonce_str	是	nonce_str	是	nonce_str	是	nonce_str	是	String(32)	随机字符串，不长于32位。推荐随机数生成算法
签名	sign	是	sign	是	sign	是	sign	是	sign	是	String(64)	服务商生成的签名，规则详见签名生成算法
签名类型	sign_type	否	sign_type	否	sign_type		sign_type	否	sign_type		String(32)	签名类型，目前支持HMAC-SHA256和MD5，默认为MD5
微信订单号	transaction_id	否	transaction_id	否	transaction_id	否	transaction_id	否	transaction_id	否	String(32)	微信订单号查询的优先级是： refund_id > out_refund_no > transaction_id > out_trade_no
商户订单号	out_trade_no	否	out_trade_no	是	out_trade_no	是	out_trade_no	是	out_trade_no	是	String(32)	"商户系统内部订单号，要求32个字符内（最少6个字符），只能是数字、大小写字母_-|*且在同一个商户号下唯一。详见商户订单号
transaction_id、out_trade_no二选一，如果同时存在优先级：transaction_id> out_trade_no"
商户退款单号	out_refund_no	否	out_refund_no	是	out_refund_no	是	out_refund_no	是	out_refund_no	是	String(64)	商户系统内部的退款单号，商户系统内部唯一，只能是数字、大小写字母_-|*@ ，同一退款单号多次请求只退一笔。
微信退款单号	refund_id	否	refund_id	否	refund_id	否	refund_id	否	refund_id	否	String(32)	"微信退款单号
refund_id、out_refund_no、out_trade_no、transaction_id四个参数必填一个，如果同时存在优先级为：refund_id > out_refund_no > transaction_id > out_trade_no"
		否	offset	否	offset	否	offset	否	offset	否	int	偏移量，当部分退款次数超过10次时可使用，表示返回的查询结果从这个偏移量开始取记录
        */
        /// <summary>
        /// 微信订单号
        /// 否
        /// </summary>
        public string transaction_id { set; get; } = string.Empty;
        /// <summary>
        /// 商户订单号
        /// 否
        /// </summary>
        public string out_trade_no { set; get; } = string.Empty;
        /// <summary>
        /// 商户退款单号
        /// 否
        /// </summary>
        public string out_refund_no { set; get; } = string.Empty;
        /// <summary>
        /// 微信退款单号
        /// 否
        /// </summary>
        public string refund_id { set; get; } = string.Empty;
        /// <summary>
        /// 偏移量
        /// 否
        /// 偏移量，当部分退款次数超过10次时可使用，表示返回的查询结果从这个偏移量开始取记录
        /// </summary>
        public int offset { set; get; }
    }
}
